In relation to packet-switched networks the term ‘quality of service’ (QoS) refers to control mechanisms that can provide different priority to different users or data flows, or guarantee a certain level of performance to a data flow in accordance with requests from the application program. Quality of service guarantees are important if the network capacity is limited, especially for real-time streaming multimedia applications. For example, ‘voice over IP’ and ‘IP-TV’ require fixed bit rates and may be delay sensitive. Efficient ‘fair’ scheduling algorithms are applied to provide ‘quality of service’. However, the presence of multicast packets can bias the scheduling algorithms and degrade the quality of service.
A typical known network device has a multiplicity of ports for receiving and forwarding packets to and from an external network in accordance with any of a variety of transmission protocols. These ports may be actual but reference herein to ‘ports’ are intended to include ‘virtual’ ports because, for example, the device may be used in a LAN which is emulated. Each packet comprises a header and a payload. The header includes the destination address, the source address, the packet type and information from which, among other things, the priority can be ascertained. The payload contains the data to be delivered. When the packet is received it is processed.
There are normally multiple output queues per port. A typical example would be eight queues for each of 128 ports. This allows the device to accord a higher priority to some type of packet and lower priority to other types. It is also customary to allocate ‘bandwidth’ to each queue for a port. A scheduling algorithm is used to allocate bandwidth between queues on a port.
Packets received on an input port may be unicast packets or multicast packets. For the purpose of the present invention, a unicast packet may be regarded as a packet that will be sent to a single destination port. The received packet may also require replication on one or more ports; an example of such a packet is a VPLS (virtual private LAN service) packet, which is a packet that can be replicated multiple times on a single output port or on multiple output ports.
It is known from US2005/0207417A1 (Ogawa) to perform a two-stage process on received multicast packets. In a first stage, received packets are partioned into separate unicast and multicast queues. In a second stage, packets are read from the multicast queues, stored in a temporary buffer, ‘exploded’ into unicast packets and put into unicast queues.
US2006/0171407 (Kim) discloses a system in which a forwarding unit has both a unicast forwarder and a multicast forwarder. A multicast packet from the multicast forwader is converted into unicast packets which are reintroduced to the forwarding unit.
These processes are not efficient in terms of memory bandwidth, a important disadvantage in high performance non-blocking archtiectures.
The purpose of the invention is to maintain fair allocation of bandwidth notwithstanding the different type of packet and/or the replication of packets on one or more ports, preferably in a manner which is efficient in terms of memory bandwidth.